翻译摘录自:http://mvdirona.com/jrh/talksandpapers/jamesrh_lisa.pdf
- 本文总结了微软MSN和Windows Live在线服务的多年设计与实践经验
- 微软的自动化运维和监视工具:Autopilot http://research.microsoft.com/pubs/64604/osr2007.pdf | http://leoncom.org/?p=650735
-
系统设计3大原则
- 预见失败。系统组件随时会崩溃或停止运行,相关依赖的组件会随时故障或停止,网络连接会故障,磁盘空间会不足。优雅的处理所有这些故障。
- 保持简单。解耦,避免(组件)相互依赖。
- 自动化。自动化的过程是可以测试、修复的,所以最终会是可依赖的。
-
运维友好的通用基础原则:
- 设计时为故障做好准备
- 冗余和故障恢复
- 廉价硬件组合
- 单一版本软件
- 多租户模型
-
运维友好的一些专有原则
- 快速健康度测试
- 完整开发环境
- 对底层组件零信任
- 不要在不同组件中构建相同功能模块
- 集群间不要相互影响
- 允许(罕见)紧急故障的人工排查。尽管自动化是重要原则,但总有一些故障还是需要依赖人工参与处理,但要尽可能降低人工参与故障处理的机会
- 在各个层次上加强访问控制
- 服务分区
- 理解网络(拓扑、负载)设计
- 分析吞吐量和延迟
- 把运维工具当作服务的一部分
- 理解(用户)访问(系统)模式/规律
- 版本化一切
- 保留最近一次发布的单元/功能测试集合
- 避免单点故障
- 自动化管理和配置
(以上p233-p236 done)
(p237-p244 TODO)